<?php

/**
 * Model filtro
 * @author Ricardo Santos Alvarenga
 * @since 15/11/2011
 *
 */
class Application_Model_Filtro
{
 /**
 * Listar todos os filtros
 * @return array();
 * */
    public function listaAllFiltros ()
    {
       $filtro = new Application_Model_DbTable_Lista();
        $select = $filtro->select()
            ->setIntegrityCheck(false)
            ->from(array('f' => 'filtro'))
            ->join(array('l'=>'lista_email'), 'f.lista=l.idlista', array('nomeLista'=>'l.nome'))
            ->order('f.nome ASC');
         try {         	
         	$dados = $filtro->fetchAll($select);
         	return $dados;
         }catch (Zend_Db_Exception $e){
         	return $e;         	
         }
         
    }
	
/**
 * Cria um novo filtro
 * @param string $nome Nome do filtro 
 * @param int $lista chave primaria da tabela lista_email
 * */ 
    public function criaFiltro ($nome,$lista)
    {
        $data = array('nome' => $nome, 'lista'=>$lista);
        $filtro = new Application_Model_DbTable_Filtro();
        $db = $filtro->getAdapter();
        try {
        	$db->beginTransaction();        	
        	$dados = $filtro->insert($data);
        	$db->commit();
        	return $dados;
        }catch (Zend_Db_Exception $e){
        	$db->rollBack();
        	return $e;
        	
        }
        
    }

    /**
     * Excluír um determinado filtro
     * @param int $idFiltro chave primaria da tabela filtro
     */
    public function excluirFiltro($idFiltro)
    {
    	$filtro = new Application_Model_DbTable_Filtro();
    	$id = (int) $idFiltro;    	
    	$where = $filtro->getAdapter()->quoteInto('idfiltro=?', $id);
    	$filtro->delete($where);
    }
	
 	/**
 	 * Metodo para listar valores com indice nominal dentro de um array
 	 * @return array
 	 */
 	public function fetchPair() {
 		
        $lista= new Application_Model_DbTable_Lista();
        $select = 'SELECT idfiltro,nome 
        			 FROM filtro
        		 ORDER BY nome DESC';                      
        return $lista->getAdapter()->fetchPairs($select);
    }
}

